package com.hsgene.order.service;

import com.hsgene.common.util.result.ApiResult;
import com.hsgene.order.domain.billing.dto.*;

import java.util.List;

/**
 * @author wxf
 * @date 2018/11/2 11:59
 **/
public interface InvoiceOpenService {
    /**
     * 查询开票列表
     *
     * @param con 查询条件
     * @return
     */
    BillingApplySumInfoDto queryApplyBilling(BillingApplyConditionDto con);

    /**
     * 更新发票信息
     *
     * @param infoDto
     */
    Boolean updateInvoice(OrderInvoiceInfoDto infoDto);

    /**
     * 根据订单id获取开票申请信息
     *
     * @param orderId 订单id
     * @return
     */
    OrderApplyBillingInfoDto getApplyBillingDetails(String orderId);

    /**
     * 校验发票信息是否完整
     *
     * @param orderId 订单id
     * @return
     */
    Boolean getOrderInvoice(String orderId);

    /**
     * 校验订单id是否是同个发票人
     *
     * @param orderIds 订单id
     * @return
     */
    List<OrderPersonBillingDto> checkOrderIsOneSelf(List<String> orderIds);

    /**
     * 申请开票
     *
     * @param orderId 订单id
     */
    ApiResult applyBilling(String orderId);

    /**
     * 合并申请开票
     *
     * @param orderIds 订单id
     * @return
     */
    ApiResult mergeApplyBilling(List<String> orderIds);

    /**
     * 获取发票信息
     * @param orderId
     * @return
     */
    OrderInvoiceInfoDto getInvoiceInfo(String orderId);
}
